/*
 * TacticaDlogo.java
 *
 * Created on 1 de abril de 2007, 13:53
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas.concursantes2007.CapitanesEOSB;

import java.awt.*;
import java.util.Vector;
import futbol.tacticas.*;
import futbol.tacticas.concursantes.Tactica;

/**
 *
 * @author Dani
 */
public class TacticaDlogo implements Tactica {
  
    final int K_PLAYERS = 11;

    private int _iDefendiendo = 0;
    private boolean _bPaseAlHueco = false;
            
    private int nValores[][]={
        {-150,0,6},  // Jugador 1
        {-120,-30,7},  // Jugador 2
        {-120,30,7},  // Jugador 3
        {-100,0,6},  // Jugador 4
        {-80,50,6},  // Jugador 5
        {-60,0,4},  // Jugador 6
        {-20,-45,4},  // Jugador 7
        {10,0,4},  // Jugador 8
        {40,50,6},  // Jugador 9
        {100,50,6},  // Jugador 10
        {110,-30,5}  // Jugador 11
    };
    
    public Color getColor1() {
        return Color.WHITE;
    }

    public Color getColor2() {
        return Color.BLUE;
    }

    public Color getColorNumero() {
        return Color.BLACK;
    }

    public String getNombre() {
        return "Capitanes EOS B";
    }
    
     public int getXInicial(int n) {
        return nValores[n][0];
    }

    public int getYInicial(int n) {
        return nValores[n][1];
    }

    public int getFuerza(int n) {
        return nValores[n][2];
    }
    
     public Vector<Comando> getComandos(SituacionJugadores sj) {
        Vector<Comando> com=new Vector();
        //Posicionamiento
        for (int n=0;n<K_PLAYERS;n++)
            com.add(new ComandoIrA(n,nValores[n][0],nValores[n][1]));
        
        //Cogo la posicion de los elementos del campo
        Point bola=sj.getBola();
        Point jugadores[]=sj.getMisJugadores();
        Point contrarios[]=sj.getContrario(); 
        int nJugMasCercano=sj.getMasCercanoDeBola();   
            
        //Portero
        int y=(int)(bola.getY()/2);
        if (y<-30) y=-30;
        if (y>30) y=30;
        com.add(new ComandoIrA(0,nValores[0][0], y));
        
        //Defensa
        if (!sj.estoyMasCercaDeBola() && bola.getX()<20)
        {
            _iDefendiendo++;                        
            com.add(new ComandoIrA(nJugMasCercano,bola.getX(), bola.getY()));  
            com.add(new ComandoIrA(sj.getSiguienteJugador(nJugMasCercano),bola.getX(), bola.getY()));
        }else
        {
            if (bola.getX()<20)
            {
            
                if (_iDefendiendo>=4)
                {
                    //patapn pa arriba
                    _iDefendiendo=0;
                    com.add(new ComandoTiroAPuerta(nJugMasCercano,10));
                }
                else
                {
                    com.add(new ComandoIrA(nJugMasCercano,bola.getX(), bola.getY()));                    
                }
            }else
            {
               com.add(new ComandoIrA(nJugMasCercano,bola.getX(), bola.getY()));                
            }
        }        
                 
        //Movimiento chupa-gol
        if (sj.getMiJugadorMasCerca(bola.getX(),bola.getY())!=10)
        {
            int yChupagol=(int)(bola.getY()/2);
            if (y<nValores[10][1]) y=nValores[10][1];
            if (y>20) y=20;
            com.add(new ComandoIrA(10,nValores[10][0], y));        
        }else
        {
            com.add(new ComandoTiroAPuerta(10,-10));
        }
        
        //Ataque
        int desvio=0;
        for (int i=0;i<K_PLAYERS;i++){
            if (jugadores[i].getX()<55){
                int nSigJug=sj.getSiguienteJugador(i);  
                if (i<5)
                { 
                    if(sj.getContrarioMasCerca(i)==sj.getContrarioMasCerca(nSigJug))
                    {
                        //patapn
                        com.add(new ComandoTiroAPuerta(i,0));
                    }
                }
                if (i==5)
                {
                    if (_bPaseAlHueco) { nSigJug = 9; }
                }
                 if (i==6)
                {
                    if (_bPaseAlHueco) nSigJug = 9;
                }
                _bPaseAlHueco = !_bPaseAlHueco;
                com.add(new ComandoPase(i, nSigJug));
            }else{                 
                desvio=0;
                if (i==9) desvio=10;
                if (i==10) desvio = -10;
                com.add(new ComandoTiroAPuerta(i,desvio));
            }
        }
        
         //System.out.println("defend: " + _iDefendiendo + ".pase la hueco." + _bPaseAlHueco);
        
        return com;
    }
}
